package com.tea.app.moudles.controller;

import com.tea.app.moudles.entity.GoodsCollection;
import com.tea.app.moudles.service.GoodsCollectionService;
import com.tea.common.common.util.result.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 用户收藏记录控制层
 */
@RestController
@RequestMapping("/api/collection")
public class GoodsCollectionController {

    @Autowired
    private GoodsCollectionService collectionService;

    /**
     * 添加收藏
     *
     * @param params 前端传来的参数，包含wxOpenid和goodsId
     * @return 操作结果
     */
    @PostMapping("/add")
    public Result<Void> addCollection(@RequestBody Map<String, Object> params) {
        //前端传来Map形式的参数 wxOpenid是用户的唯一标识
        String wxOpenid = (String) params.get("wxOpenid");
        //用户要收藏的商品id
        Long goodsId = Long.valueOf(params.get("goodsId").toString());
        //调用service层的方法，添加收藏
        collectionService.addCollection(wxOpenid, goodsId);
        return Result.ok();
    }

    /**
     * 移除收藏
     *
     * @param params 前端传来的参数，包含wxOpenid和goodsId
     * @return 操作结果
     */
    @DeleteMapping("/remove")
    public Result<Void> removeCollection(@RequestBody Map<String, Object> params) {
        //前端传来Map形式的参数 wxOpenid是用户的唯一标识
        String wxOpenid = (String) params.get("wxOpenid");
        //用户要收藏的商品id
        Long goodsId = Long.valueOf(params.get("goodsId").toString());
        //调用service层的方法，移除收藏
        collectionService.removeCollection(wxOpenid, goodsId);
        return Result.ok();
    }

    /**
     * 获取用户收藏的商品列表
     *
     * @param wxOpenid 用户的唯一标识
     * @return 用户收藏的商品列表
     */
    @GetMapping("/list")
    public Result<List<GoodsCollection>> getUserCollections(@RequestParam String wxOpenid) {
        //调用service层的方法，获取用户收藏的商品列表并返回
        return Result.ok(collectionService.getUserCollections(wxOpenid));
    }

    /**
     * 获取用户收藏的商品ID列表
     * @param wxOpenid 用户的唯一标识
     * @return 用户收藏的商品ID列表
     */
    @GetMapping("/ids")
    public Result<List<Long>> getUserCollectionGoodsIds(@RequestParam String wxOpenid) {
        //调用service层的方法，获取用户收藏的商品ID列表并返回
        return Result.ok(collectionService.getUserCollectionGoodsIds(wxOpenid));
    }
}